#ifndef APPOINTMENT_H
#define APPOINTMENT_H

#include <string>
#include <iomanip>
using namespace std;

class Appointment {

	friend ostream &operator<< (ostream& os, const Appointment & app);

protected:
	int start_hour_;
	int start_min_;
	int end_hour_;
	int end_min_;
	string subject_;
	int day_index_;

public:

	Appointment(const int & start_hour, const int & start_min, const int & end_hour, const int & end_min, 
																  const string & subject, const int & day_index) : \
		start_hour_(start_hour), start_min_(start_min), end_hour_(end_hour), end_min_(end_min),
														subject_(subject), day_index_(day_index) {};

	Appointment(const Appointment & other); // Copy CTOR

	~Appointment() {};
	Appointment & operator= (const Appointment & other);
	virtual inline const int & getStartHour() const { return start_hour_; };
	virtual inline const int & getEndHour() const { return end_hour_; };
	virtual inline const int & getStartMin() const { return start_min_; };
	virtual inline const int & getEndMin() const { return end_min_; };
	virtual inline const string & getSubject() const { return subject_; };
	virtual inline const int & getDayIndex() const { return day_index_; };
	
	virtual void updateTime(const int & day_index, const int & start_hour, const int & start_min, const int & end_hour, const int & end_min);

	virtual bool operator== (const Appointment & other) const;
	virtual bool operator< (const Appointment & other) const;

};

#endif